package leetcode.array;

/**
 * 有两个大小为 m 和 n 的排序数组 nums1 和 nums2 。
 * <p>
 * 请找出两个排序数组的中位数并且总的运行时间复杂度为 O(log (m+n)) 。
 * <p>
 * 示例 1:
 * <p>
 * nums1 = [1, 3]
 * nums2 = [2]
 * <p>
 * 中位数是 2.0
 * <p>
 * <p>
 * 示例 2:
 * <p>
 * nums1 = [1, 2]
 * nums2 = [3, 4]
 * <p>
 * 中位数是 (2 + 3)/2 = 2.5
 */
public class Solution4 {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        double r;
        int m = nums1.length;
        int n = nums2.length;
        int odd = (m + n) % 2;
        int[] result = new int[m + n];
        int i = 0, j = 0, k = 0;
        while (i < m || j < n) {
            if (i == m) {
                result[k++] = nums2[j++];
            } else if (j == n) {
                result[k++] = nums1[i++];
            } else {
                if (nums1[i] > nums2[j]) {
                    result[k++] = nums2[j++];
                } else {
                    result[k++] = nums1[i++];
                }
            }
        }
        int index = (m + n) / 2;
        if (odd == 0) {
            r = (result[index - 1] + result[index]) / 2.0;
        } else {
            r = result[index];
        }
        return r;
    }

    public static void main(String[] args) {
        int[] num1 = {1};
        int[] num2 = {2};
        System.out.println(new Solution4().findMedianSortedArrays(num1, num2));
    }
}
